import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Environment:
title: Optional[str] = None
code: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Party:
title: Optional[str] = None
code: Optional[str] = None
version: Optional[str] = None
environment: Optional[Environment] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Header:
message_i_d: Optional[str] = None
timestamp: datetime.datetime = datetime.datetime(1, 1, 1)
sender: Optional[Party] = None
recipient: Optional[Party] = None
request_message_i_d: Optional[Object] = None
class eventType(str, Enum):
UPDATE = 'Update'
CREATE = 'Create'
DELETE = 'Delete'
RESPONSE = 'Response'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Document(ICustomProperties):
id: Optional[str] = None
root_document_i_d: Optional[str] = None
registrationprofile_i_d: Optional[str] = None
title: Optional[str] = None
full_title: Optional[str] = None
number: Optional[str] = None
version: Optional[str] = None
external_number: Optional[str] = None
external_version: Optional[str] = None
internal_number: Optional[str] = None
internal_invoice_number: Optional[str] = None
person_i_d: int = 0
relation_i_d: int = 0
relation_title: Optional[str] = None
project_i_d: int = 0
project_title: Optional[str] = None
extension: Optional[str] = None
date: Optional[datetime.datetime] = None
comments_count: int = 0
has_comments: bool = False
has_preview: bool = False
extra_field: Optional[str] = None
is_favorite: bool = False
documentcategory_text: Optional[str] = None
file_size: Optional[int] = None
file_date: Optional[datetime.datetime] = None
hash: Optional[str] = None
hash_type: Optional[str] = None
file_url: Optional[str] = None
standard_document_url: Optional[str] = None
is_corporate_identity: bool = False
user_title: Optional[str] = None
is_frozen: bool = False
internal_company_i_d: int = 0
direct_url: Optional[str] = None
allow_digital_signing_only_on_primary_versions: bool = False
is_primary_version: bool = False
file_extension: Optional[str] = None
custom_properties: Optional[Dict[str, Object]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DocumentMessage:
header: Optional[Header] = None
event_type: Optional[eventType] = None
document: Optional[Document] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DocumentRequestMessage:
header: Optional[Header] = None
root_document_i_d: Optional[str] = None
include_physical_file: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProcessDocumentRequestMessage:
instance_id: Optional[str] = None
document_request: Optional[DocumentRequestMessage] = None
Python ProcessDocumentRequestMessage DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /jsonl/reply/ProcessDocumentRequestMessage HTTP/1.1
Host: kpm_digiofficeapigateway.tbi.nl
Accept: text/jsonl
Content-Type: text/jsonl
Content-Length: length
{"InstanceId":"00000000-0000-0000-0000-000000000000","DocumentRequest":{"Header":{"MessageID":"String","Timestamp":"0001-01-01T00:00:00.0000000","Sender":{"Title":"String","Code":"String","Version":"String","Environment":{"Title":"String","Code":"String"}},"Recipient":{"Title":"String","Code":"String","Version":"String","Environment":{"Title":"String","Code":"String"}},"RequestMessageID":{}},"RootDocumentID":"String","IncludePhysicalFile":false}}
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length
{"Header":{"MessageID":"String","Timestamp":"0001-01-01T00:00:00.0000000","Sender":{"Title":"String","Code":"String","Version":"String","Environment":{"Title":"String","Code":"String"}},"Recipient":{"Title":"String","Code":"String","Version":"String","Environment":{"Title":"String","Code":"String"}},"RequestMessageID":{}},"EventType":"Update","Document":{"GlobalID":"String","RootDocumentID":"String","Code":"String","Subject":"String","VersionNumber":"String","NewestVersion":false,"RelationReference":{"GlobalID":"String","Title":"String"},"DocumentTypeReference":{"GlobalID":"String","Title":"String"},"ProjectReference":{"GlobalID":"String","Title":"String"},"ConstructionBlockReference":{"GlobalID":"String","Title":"String"},"ConstructionNumberReference":{"GlobalID":"String","Title":"String"},"HousingTypeReference":{"GlobalID":"String","Title":"String"},"Floor":0,"FloorSpecified":false,"DeletedDate":"0001-01-01T00:00:00.0000000","DeletedDateSpecified":false,"File":{"Type":"String","Name":"String","Size":0,"Content":"String","ModifiedDate":"0001-01-01T00:00:00.0000000"},"CustomFields":[{"Name":"String","Value":"String"}],"CreationDate":"0001-01-01T00:00:00.0000000","CreatedBy":"String","ModifiedDate":"0001-01-01T00:00:00.0000000","ModifiedBy":"String"}}